class Solution{
    public:
        int firstMissingPositive(vector<int>& nums){
            for(int i = 0; i < nums.size(); i++){
                //注意：此处不能只判断单次，而是需要一直循环判断直至得到一个正确的位置或者条件不符
                while(nums[i] > 0 && nums[i] < nums.size() && nums[nums[i] - 1] != nums[i])  
                    swap(nums[i], nums[nums[i] - 1]);
            }
            for(int i = 0; i < nums.size(); i++){
                if(nums[i] != i + 1)  return i + 1;
            }
            return nums.size() + 1;            
        }
};